Modern system-on-chips (SoCs) and other integrated circuits (ICs) are becoming increasingly complex. Debug of these complex ICs is extremely challenging due to system complexity. Performance monitor units and debug units, such as hardware performance monitors and debuggers, can be used in ICs to gather data regarding the operations performed by the ICs. Compared to software profilers, hardware performance monitors and debuggers provide low-overhead access to detailed performance and debug information related to functional blocks of the ICs such as central processing unit (CPU), network, caches and main memory.